home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group93a.txt / 000075_icon-group-sender _Mon Mar 1 10:01:08 1993.msg < prev    next >
Internet Message Format  |  1993-04-21  |  2KB

  1. Received: by cheltenham.cs.arizona.edu; Mon, 1 Mar 1993 11:56:07 MST
  2. Date: Mon, 1 Mar 93 10:01:08 PST
  3. From: alex@laguna.Metaphor.COM (Bob Alexander)
  4. Message-Id: <9303011801.AA10630@laguna.Metaphor.COM>
  5. To: icon-group@cs.arizona.edu, rjhare@festival.ed.ac.uk
  6. Subject: Re: environment variables
  7. Status: R
  8. Errors-To: icon-group-errors@cs.arizona.edu
  9.  
  10. >How do I change the value of an environment variable from within Icon?
  11.  
  12. As you probably know, processes (like Icon) can't influence the
  13. environment variables in their parent shell.  But there might be hope,
  14. depending on exactly what it is you are really trying to accomplish.
  15.  
  16.  
  17. If you are changing the environment to pass to a command invoked from
  18. within Icon, the environment variable can be set in the same system()
  19. call:
  20.  
  21.     system("MY_VAR=abc command")
  22.  
  23. This construct in the Bourne shell will temporarily add "MY_VAR" to the
  24. environment passed to "command", but that change will be forgotton when
  25. the Icon program terminates; it will even be forgotten in subsequent
  26. system() calls in the same program, since the subshell containing your
  27. new definition terminates before the system() call returns to you.
  28.  
  29.  
  30. Here's a trick I've used when I want my Icon program to change my base
  31. shell environment.  Pass a value back as standard output, then actually
  32. set the variable in the shell itself.  For example, if you want to
  33. modify the value of $PATH , make a program "my_prog" that prints the
  34. new value to standard output and issue the following shell command:
  35.  
  36.     PATH=`my_prog`
  37.  
  38. This line can be encapsulated in a file, but that file must be invoked
  39. by the "." command ("source" command in C shell).  Normal command file
  40. (shell script) invocation causes the file's commands to execute in a
  41. subshell and, therefore, they won't influence your base shell.  In C
  42. shell, the above line can more conveniently be encapsulated in an
  43. alias, since aliases don't (necessarily) create subshells.
  44.  
  45.  
  46.  
  47. -- Bob Alexander
  48.  
  49. Metaphor Computer Systems     (415) 966-0751      alex@metaphor.com
  50. Mountain View, CA           ...{uunet}!{decwrl,apple}!metaphor!alex
  51.